package sistemioperativi.eserc3.readwrite;

import java.util.concurrent.Semaphore;

public class RW3 extends MemoriaCondivisa{
	
	private Semaphore mutex;
		
	public RW3(Semaphore mutex){
		this.mutex = mutex;
	}
	
	@Override
	public void inizioScrittura() throws InterruptedException {
		System.out.println("Richiesta per INIZIARE write: "+Thread.currentThread().getId());
		mutex.acquire(3);
		System.out.println(Thread.currentThread().getId()+" Ha iniziato a scrivere");
//		Thread.currentThread().setPriority(Thread.currentThread().getPriority()-1);
	}

	@Override
	public void fineScrittura() throws InterruptedException {
		System.out.println("Fine di "+Thread.currentThread().getId()+" in SCRITTURA");
		mutex.release(3);
	}

	@Override
	public void inizioLettura() throws InterruptedException {
		System.out.println("Richiesta per INIZIARE read: "+Thread.currentThread().getId());
		mutex.acquire();
//		Thread.currentThread().setPriority(Thread.currentThread().getPriority()-1);
		System.out.println(Thread.currentThread().getId()+" Ha iniziato a LEGGERE");
	}

	@Override
	public void fineLettura() throws InterruptedException {
		System.out.println("Fine di "+Thread.currentThread().getId()+" in LETTURA");
		mutex.release();
	}

}
